<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class materia extends CI_Controller {
	public function __construct(){
		parent::__construct();
	}
	//teste
	
	public function exlcuir($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -1;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/MateriaDAO", "mDAO");
				$ret = $this->mDAO->excluir($id);
				if($ret){
					$saida['error'] = 0;
					$saida['msg'] = "Excluido com sucesso";
				} else {
					$saisa['error'] = -3;
					$saida['msg'] = "Erro ao excluir";
				}
			} else {
				$saida['error'] = -2;
				$saida['msg'] = "Id Inválido";
			}
		}
		else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function buscarMateria(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			$this->load->model("dao/MateriaDAO", "mDAO");
			if(isset($_POST['busca'])){
				$busca = $_POST['busca'];
				$listaMaterias = $this->mDAO->buscarMateria($busca);
			} else {
				$listaMaterias = $this->mDAO->getListaMateria();
			}
			$data = array(
					"listaMateria" => $listaMaterias,
						
			);
			$this->load->view("buscarmateria", $data);
		} else {
			$this->login->redirecionar("admin");
		}
		
			
		
	}
	
	public function getMateriaByProfessor(){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("professor")){
			$idProfessor = $this->login->idLogado();
			$this->load->model("dao/MateriaDAO", "mDAO");
			$listaM = $this->mDAO->getMateriasProfessor($idProfessor);
			if($listaM && count($listaM) > 0){
				$saida['error'] = 0;
				$saida['msg'] = "Sucesso";
				$lista = array();
				foreach($listaM as $m){
					$materia = array();
					$materia['id'] = $m->getIdMateria();
					$materia['materia'] = $m->getMateria();
					array_push($lista, $materia);
				}
				$saida['listaMateria'] = $lista;
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Sem Matérias";
			}
		} else {
			$this->login->redireciona("professor");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function setMateriaTurma($idTurma){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(is_numeric($idTurma)){
				if(isset($_POST['idSelecionado']) && $_POST['idSelecionado'] != ""){
					$selecionado = $_POST['idSelecionado'];
				} else {
					$selecionado = array();
				}
				if(isset($_POST['todos']) && $_POST['todos'] != ""){
					$todos = $_POST['todos'];	
				} else {
					$todos = array();
				}
				$remover = array_diff($todos, $selecionado);
					
				$this->load->model("dao/MateriaDAO", "mDAO");
				$retorno = $this->mDAO->setMateriaTurma($selecionado, $remover, $idTurma);
				
				if($retorno){
					$saida['error'] = 0;
					$saida['msg'] = "Relacionado com sucesso";
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Erro ao relacionar";
				}
				
			} else {
				$saida['error'] = -4;
				$saida['msg'] = "Id turma inválido";
			}
		} else {
			$this->login->redireciona("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function getTurmaMateria($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/MateriaDAO", "mDAO");
				$listaMaterias = $this->mDAO->getTurmaMateriaById($id);
				
				if($listaMaterias && count($listaMaterias) > 0){
					$lista = array();
					foreach($listaMaterias as $l){
						$materia = array();
						$materia['id'] = $l->getIdMateria();
						$materia['materia'] = $l->getMateria();
						array_push($lista, $materia);
					}
					$saida['error'] = 0;
					$saida['listaMateria'] = $lista;
					$saida['msg'] = "Sucesso";
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Sem turmas";
					$saida['listaMateria'] = -1;;
				}
				
			} else {
				$saida['error'] = -3;
				$saida['msg'] = "Id não é numérico";
			}
		} else {
			$this->login->redireciona("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function getMateria($id){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/MateriaDAO", "mDAO");
				$materia = $this->mDAO->getMateriaById($id);
				$this->load->model("dao/EnsinoDAO", "eDAO");
				$listaEnsino = $this->eDAO->getListaEnsino();
				
				
				$data = array(
						"materia" => $materia,
						"listaEnsino" => $listaEnsino);
				$this->load->view("cadastromateria", $data);
			} else {
				echo "ID não numérico";
			}
		} else {
			$this->login->redireciona("admin");
		}
	}
	
	public function getMateriaByEnsino($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			$this->load->model("dao/MateriaDAO", "mDAO");
			$listaMateria = $this->mDAO->getMateriaByEnsino($id);
			if($listaMateria){
				$saida['error'] = 0;
				$materias = array();
				
				foreach ($listaMateria as $m){
					$materia = array();
					$materia['id'] = $m->getIdMateria();
					$materia['materia'] = $m->getMateria();
					array_push($materias, $materia);	
				}
				$saida['materia'] = $materias;
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Não foram encontrado matérias";
			}
		} else {
			$this->login->redireciona("admin");
		}
		echo json_encode($saida);
	}
	
	public function setProfessorMateria(){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(isset($_POST['idProfessor']) && $_POST['idProfessor'] != "" && isset($_POST['idTurma']) && $_POST['idTurma'] != ""){
				if(isset($_POST['id']) && $_POST['id'] != ""){
					$ids = $_POST['id'];				
				} else {
					$ids = array();
				
				}
				if(isset($_POST['todos']) && $_POST['todos'] != ""){
					$todosId = $_POST['todos'];
				} else {
					$todosId = array();
				}
				
				$remover = array_diff($todosId, $ids);		
				//$remover = implode("-", $remover);
				$idProfessor = (int)$_POST['idProfessor'];
				$idTurma = (int)$_POST['idTurma'];
				$this->load->model("dao/MateriaDAO", "mDAO");
				$retorno = $this->mDAO->setProfessorMateria($ids, $remover, $idProfessor, $idTurma);
				if($retorno){
					
					if(is_array($retorno) && count($retorno) > 0){
						$saida['erroIdList'] = $retorno;
					} else {
						$saida['erroIdList'] = 0;
					}
					$saida['error'] = 0;
					$saida['remover'] = $remover;
					$saida['msg'] = "Sucesso";
				} else {
					$saida['error'] = -3;
				}
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Professor não selecionado";
			}
		} else {
			$this->login->redireciona("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	/**
	 * 
	 */
	public function cadastrar(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			$this->load->model("dao/EnsinoDAO", "eDAO");
			$listaEnsino = $this->eDAO->getListaEnsino();
			$data = array(
					"listaEnsino" => $listaEnsino);
			$this->load->view("cadastromateria", $data);
		} else {
			$this->login->redireciona("admin");
		}
	}
	
	/**
	 * 
	 * @param unknown_type $id
	 */
	public function inserirEditar($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				if(isset($_POST['idEnsino']) && $_POST['idEnsino'] != "" && isset($_POST['materia']) && $_POST['materia'] != ""){
					$materia = $_POST['materia'];
					$idEnsino = $_POST['idEnsino'];
					
					$this->load->model("dao/MateriaDAO", "mDAO");
					$retorno = (int)$this->mDAO->inserirEditar($id, $idEnsino, $materia);
					if($retorno == 0){
						$saida['error'] = 0;
						$saida['msg'] = "Editado com sucesso";
					}
					elseif($retorno == 2){
						$saida['error'] = 1;
						$saida['msg'] = "Inserido com sucesso";
					}
					elseif($retorno == 1){
						$saida['error'] = 2;
						$saida['msg'] = "Não encontrado para editar";
					}
					else {
						$saida['error'] = 3;
						$saida['msg'] = "Erro desconhecido";
					}
				} else {
					$saida['error'] = -2;
					$saida['msg'] = "Campos obrigatórios ficaram em branco";
				}
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Id néo é numérico";
			}
			
		} else {
			$this->login->redirecionar("admin");
		}
		echo json_encode($saida);
	}
	
	
}
